home *** CD-ROM | disk | FTP | other *** search
- 5 N0=10:N1=20:N2=N0+N1
- 10 DIMC$(12),C(10,2),N$(N2),T(N2,3),M$(1)
- 20 PRINT"[147]";TAB(9);"** B-1 BOMBER GAME **":PRINT
- 25 PRINTTAB(10);"COPYRIGHT 1980 BY":PRINT:PRINTTAB(13);"AVALON HILL"
- 27 PRINTTAB(9);"MICROCOMPUTER GAMES"
- 30 FORI=1TO12:READC$(I):NEXT
- 35 DATAAU,EC,EV,PH,NA,AL,CO,ST,RA,SE,AR,BO
- 40 FORI=1TON2:READN$(I),T(I,1),T(I,2):NEXT
- 45 N$(0)="THULE AFB":T(0,1)=0:T(0,2)=0
- 50 DATAARKHANGELSK,8261,5922,ASTRAKHAN',8631,7947,KIYEV,7391,7467
- 55 DATALENINGRAD,7661,6427,MOSKVA,7956,6937,MURMANSK,8056,5452
- 60 DATASEVASTOPOL,7506,8152,SVERDLOVSK,9311,6682,VOLGOGRAD,8331,7692
- 65 DATAYEREVAN,8381,8657
- 70 DATADUBOVKA,8350,7650,KHAR'KOV,8850,7450,KONOSHA,8153,6325
- 75 DATALIPETSK,8100,7210,OCHAMCHIRA,8060,8400,ODESSA,7230,8050
- 80 DATAONEGA,8147,5976,PECHENGA,7976,5410,PINSK,7115,7235
- 82 DATAPODOL'SK,7900,7010,PSKOV,7475,6780,ROSTOV,7990,8010
- 84 DATASARPA,8515,7930,SYKTYVKAR,8825,6200,TALLINN,7060,6415
- 86 DATATBILISI,8415,8435,UKHTA,8960,5925,VINNITSA,7200,7585,VYBORG,7575,6300
- 90 DATAYARAN'SK,8575,6740
- 100 A9=25000:A0=100:C0=10:S=4500:P=6:F9=0:T=0:E=1.75
- 105 M$(0)="SAM":M$(1)="MIG"
- 110 X=5500+RND(0)*1500:Y=3500+RND(0)*1000
- 120 FORI=1TON2:T(I,3)=0:NEXT:A=INT(25000*RND(0)):A1=A:R9=0
- 130 C=INT(RND(0)*360):C1=C:T9=INT(RND(0)*N0+1):T8=0:F=18500
- 140 FORI=1TO10:C(I,1)=0:NEXT:F$="":FORI=1TO5
- 150 F$=F$+CHR$(INT(RND(0)*26)+65):NEXT:L9=.3:PRINT""
- 160 PRINT"YOU ARE FLYING A B1 BOMBER OUT OF"
- 161 PRINT"THULE AFB. YOU ARE IN AN ALERT STATUS"
- 162 PRINT"ORBITING OVER THE ARCTIC":PRINT:FORI=1TO6000:NEXT
- 180 PRINT"*****[146] FLASH *****":PRINT"HOT WAR HOT WAR HOT WAR[146]"
- 190 PRINT:PRINT"YOUR PRIMARY TARGET IS ";N$(T9);"."
- 192 PRINT"YOUR FAIL SAFE CODE IS ";F$;"[146].":PRINT
- 200 PRINT"YOUR ALTERNATES ARE:":J=0:FORI=1TON0:IFI=T9THEN230
- 210 J=J+1:PRINTTAB(12*(J-1)+1);N$(I);:IFJ<3THEN230
- 220 J=0:IFI<9THENPRINT
- 230 NEXT:PRINT:PRINT
- 240 PRINT"SOVIET DEFENSE COMPLEXES ARE:"
- 250 J=0:FORI=N0+1TON2:J=J+1
- 260 PRINTTAB(12*(J-1)+1);N$(I);:IFJ<3THEN280
- 270 J=0:PRINT
- 280 NEXT:PRINT:PRINT:PRINT"GOOD LUCK!"
- 290 GOSUB670:INPUT"COMMAND";A$:IFLEN(A$)<2THEN310
- 295 CM=0
- 300 FORI=1TO12:IFLEFT$(A$,2)=C$(I)THENCM=I
- 305 NEXT:IFCM>0THEN350
- 310 PRINT"LEGAL COMMANDS ARE:":PRINT"CO TO CHANGE COURSE"
- 311 PRINT"AL TO CHANGE ALTITUDE":PRINT"ST TO GET A STATUS REPORT"
- 312 PRINT"RA TO GET A RADAR REPORT":PRINT"NA TO GET NAVIGATION DATA"
- 313 PRINT"SE TO SEARCH FOR A DEFENSE COMPLEX"
- 314 PRINT"AU TO HAVE AUTOPILOT FLY PLANE"
- 315 PRINT"EV TO CONDUCT EVASIVE ACTION"
- 316 PRINT"EC TO USE ECM"
- 317 PRINT"PH TO LAUNCH PHOENIX MISSILE"
- 318 PRINT"AR TO ARM BOMB"
- 319 PRINT"BO TO DROP BOMB":T0=T+3+INT(5*RND(0)):GOTO1020
- 350 ONCMGOTO430,970,740,820,560,360,380,700,650,610,390,470
- 360 INPUT"NEW ALTITUDE";A1:IFA1>A9THENA1=A9
- 361 IFA1<A0THENA1=A0
- 370 T0=T+13+INT(15*RND(0)):GOTO1020
- 380 INPUT"NEW COURSE";C1:GOTO370
- 390 IFF9=2THEN420
- 391 INPUT"FAIL SAFE CODE";A$:IFA$=F$THENF9=1
- 400 IFF9=0THEN410
- 401 PRINT"BOMB ARMED.":L9=10*L9:GOTO370
- 410 PRINT"WRONG CODE.":GOTO370
- 420 PRINT"BOMB ALREADY DROPPED.":GOTO370
- 430 PRINT"TIME FOR AUTOPILOT (S,M,H)? ";:A$=" "
- 431 GETB$:IFB$=""THEN431
- 432 PRINTB$;:IFASC(B$)=13THEN439
- 433 IFASC(B$)<>20THENA$=A$+B$:GOTO431
- 434 IF((ASC(B$)=20)AND(LEN(A$)>1))THENA$=LEFT$(A$,LEN(A$)-1)
- 435 GOTO431
- 439 A$=A$+" ":I=0:J=0:K=0
- 440 IFA$=" "THEN460
- 441 I=VAL(A$):GOSUB1650:IFA$=" "THEN460
- 450 J=VAL(A$):GOSUB1650:IFA$=" "THEN460
- 455 K=VAL(A$)
- 460 I=-I*(I>0):J=-J*(J>0):K=-K*(K>0):T2=T+I+60*J+3600*K:GOTO1020
- 470 IFF9=2THEN420
- 471 IFF9=0THEN530
- 472 INPUT"TARGET";A$
- 480 IFLEN(A$)<2THEN540
- 481 A$=LEFT$(A$,2):GOSUB1760:IF((NN=-1)OR(NN>N0))THEN540
- 490 GOSUB1710:IFRA>250THEN550
- 491 INPUT"CONFIRM DROP (Y/N)";A$
- 500 IFA$<>"Y"THEN370
- 501 FORI=1TO1500:NEXT:PRINTN$(NN);" DESTROYED."
- 510 L9=L9/15
- 520 T8=NN:S=S+250:A0=A0+50:F9=2:T0=T+3+INT(5*RND(0)):GOTO1020
- 530 PRINT"BOMB NOT ARMED.":GOTO370
- 540 PRINT"IMPROPER TARGET.":GOTO370
- 550 PRINTN$(NN);" NOT IN RANGE.":GOTO370
- 560 INPUT"WHERE TO";A$:IFLEN(A$)<2THEN600
- 561 A$=LEFT$(A$,2)
- 570 GOSUB1760:IFNN=-1THEN600
- 580 GOSUB1710:GOSUB1600
- 581 PRINTN$(NN);" BEARS";INT(AN*10)/10;"T RANGE";INT(RA);"KM."
- 590 T0=T+40+INT(41*RND(0)):GOTO1020
- 600 PRINT"NOT ON THE MAP.":GOTO590
- 610 I=0:J=1E4:FORNN=N0+1TON2:GOSUB1710:IFRA>JTHEN640
- 620 IFT(NN,3)=2THEN640
- 630 GOSUB1600:IFABS(C-AN)>45ANDABS(C-AN)<315THEN640
- 631 J=RA:I=NN
- 640 NEXT:NN=I:IFNN>0THEN580
- 641 PRINT"NO COMPLEX FOUND.":GOTO590
- 650 PRINT"CONTACTS:":GOSUB670:IFJ=0THENPRINT" NO CONACTS."
- 660 T0=T+5+INT(RND(0)*11):GOTO1020
- 670 J=0:FORI=1TO10:IFC(I,1)=0THEN690
- 671 J=1
- 680 PRINTM$(-(C(I,1)>10));"-";C(I,1);"INTERCEPTS IN";C(I,2)-T;"SECONDS."
- 690 NEXT:RETURN
- 700 PRINT"COURSE";INT(C);"T SPEED";S;"KPH"
- 710 PRINT"ALTITUDE";A;"M FUEL";F;"KM"
- 720 IFF9<>2THENPRINT"PRIMARY TARGET: ";N$(T9)
- 730 PRINTP;"PHOENIX LEFT.":T0=T+20+INT(RND(0)*21):GOTO1020
- 740 A1=200+INT(300*RND(0)):IFRND(0)<.5THENA1=-A1
- 741 A=A+A1
- 750 IFA<0THEN1470
- 751 A1=A:C1=60+INT(60*RND(0))
- 760 IFRND(0)>.5THENC1=-C1
- 761 C=C+C1:C=C+360*(C>360)-360*(C<0)
- 770 C1=C:FORI=1TO10:IFC(I,1)=0THEN810
- 780 J=(8-2*(C(I,1)<10))/(C(I,2)-T):IFJ>.95THENJ=.95
- 790 IFRND(0)>JTHEN810
- 791 PRINTM$(-(C(I,1)>10));"-";C(I,1);"LOSES TARGET";
- 800 IFC(I,1)>10THENPRINT" - RETURNS TO BASE";
- 801 PRINT".":C(I,1)=0
- 810 NEXT:T0=T+10+INT(21*RND(0)):GOTO1020
- 820 IFP=0THEN870
- 821 INPUT"PHOENIX MISSILE ARMED. TARGET";A$
- 822 IFLEN(A$)>3THENA$=LEFT$(A$,3)
- 830 IFA$="M"ORA$="MIG"ORA$="S"ORA$="SAM"THEN900
- 831 IFA$="N"ORA$="NONE"THEN880
- 832 IFLEN(A$)<2THEN880
- 833 A$=LEFT$(A$,2):GOSUB1760
- 840 IFNN<N0+1THEN880
- 841 GOSUB1710:IFRA>200THEN890
- 842 PRINT"PHOENIX AWAY!"
- 850 PRINTN$(NN);" DEFENSE COMPLEX DESTROYED.":T(NN,3)=2:P=P-1
- 860 T0=T+3+INT(5*RND(0)):GOTO1020
- 870 PRINT"NO MORE MISSILES!":GOTO860
- 880 PRINT"INVALID TARGET.":GOTO860
- 890 PRINTN$(NN);" OUT OF RANGE.":GOTO860
- 900 J=1E4:K=0:FORI=1TO10:IFC(I,1)=0THEN920
- 910 IFC(I,2)-T>JTHEN920
- 911 J=C(I,2)-T:K=I
- 920 NEXT:PRINT"PHOENIX AWAY!":P=P-1:IFK=0THEN960
- 930 IFJ>10THEN960
- 931 IFC(K,1)<10ANDRND(0)>.6THEN960
- 940 IFC(K,1)>10ANDRND(0)>.85THEN960
- 941 PRINTM$(-(C(K,1)>10));"-";C(K,1);"DESTROYED!"
- 950 C(K,1)=0:GOTO860
- 960 PRINT"MISSED!":GOTO860
- 970 FORI=1TO10:IFC(I,1)=0THEN1010
- 971 J=E*(.5+5/(C(I,2)-T))
- 980 IFJ>.97THENJ=.97
- 981 IFRND(0)>JTHEN1010
- 982 PRINTM$(-(C(I,1)>10));"-";C(I,1);
- 990 IFC(I,1)>10THENPRINT"LOSES TARGET - RETURNS TO BASE."
- 1000 IFC(I,1)<10THENPRINT" SELF DESTRUCTS."
- 1001 C(I,1)=0
- 1010 NEXT:E=E*(.7+.3*RND(0)):T0=T+3+INT(5*RND(0)):GOTO1020
- 1020 T3=T0:I9=1:IFT0>TTHEN1060
- 1021 I9=0:T3=INT(RND(0)*301)+T
- 1030 FORI=1TO10:IFC(I,1)=0THEN1050
- 1031 IFC(I,2)<T3THENT3=C(I,2)
- 1040 IFT>=C(I,2)-10THEN1050
- 1041 IFC(I,2)-10<T3THENT3=C(I,2)-10
- 1050 NEXT:IF(T2<=T)OR(T3<T2)THEN1060
- 1055 T3=T2:I9=1
- 1060 T0=T3-T:A2=A0*T0:C2=C0*T0
- 1070 IFA2>ABS(A-A1)THENA=A1
- 1071 IFA2<=ABS(A-A1)THENA=A+A2*SGN(A1-A)
- 1080 IFC2>ABS(-360*(ABS(C-C1)>180)-ABS(C-C1))THEN1100
- 1090 C=C+C2*SGN(C1-C):C=C-360*(C<0)+360*(C>360):GOTO1110
- 1100 C=C1
- 1110 X=X+S*T0*SIN(C*(null)/180)/3600
- 1120 F=F-INT(S*(T3-T)/3600)
- 1130 Y=Y-S*T0*COS(C*(null)/180)/3600:T=T3
- 1140 IFF<0THEN1490
- 1150 DE=0:CR=0:FORI=1TO10:IF(C(I,1)=0)OR(DE=1)OR(CR=1)THEN1210
- 1151 IFC(I,2)>TTHEN1200
- 1160 PRINT"NUCLEAR AIRBURST!!![146]":R9=1:C(I,1)=0:I9=1
- 1170 A=A+INT(3000*RND(0))*SGN(.5-RND(0)):IFA<0THENCR=1
- 1180 A1=A:F=INT(F*RND(0)):S=INT(S*(.5+.5*RND(0)))
- 1190 IFRND(0)<.15THENDE=1
- 1191 GOTO1210
- 1200 IFC(I,2)>T+10THEN1210
- 1201 PRINTM$(-(C(I,1)>10));"-";C(I,1);"IN PHOENIX RANGE.":I9=1
- 1210 NEXT:IFCR=1THEN1470
- 1211 IFDE=1THEN1480
- 1212 IFF9=2THEN1270
- 1220 FORNN=1TON0:GOSUB1710:IFRA>250THEN1240
- 1221 IFT(NN,3)<>0THEN1240
- 1230 PRINTN$(NN);" IN BOMB RANGE.":T(NN,3)=1:I9=1
- 1240 IFT(NN,3)<>1THEN1260
- 1241 IFRA<250THEN1260
- 1250 PRINTN$(NN);" NO LONGER IN BOMB RANGE.":T(NN,3)=0
- 1260 NEXT
- 1270 FORNN=N0+1TON2:IFT(NN,3)=2THEN1440
- 1280 IFABS(X-T(NN,1))>750THEN1440
- 1290 IFABS(Y-T(NN,2))>750THEN1440
- 1291 GOSUB1710:IFRA>750THEN1440
- 1300 IFRA>200ORP=0THEN1320
- 1301 IFT(NN,3)=1THEN1320
- 1302 T(NN,3)=1
- 1310 PRINTN$(NN);" BASE IN PHOENIX RANGE.":I9=1
- 1320 IFT(NN,3)<>1THEN1340
- 1321 IFRA<200THEN1340
- 1322 T(NN,3)=0
- 1330 PRINTN$(NN);" BASE OUT OF MISSILE RANGE."
- 1340 IFRND(0)>L9*(T0/300)*(A^.125)THEN1440
- 1350 J=0:FORK=1TO10:IFC(K,1)=0THENJ=K
- 1351 NEXT:IFJ=0THEN1440
- 1360 IFRND(0)>.5THEN1380
- 1370 C(J,1)=INT(9*RND(0)+1):M=6500:GOTO1390
- 1380 C(J,1)=21+2*INT(RND(0)*7):M=5000
- 1390 GOSUB1600:L=(AN-C)*(null)/180
- 1400 L=SQR(M*M-(S*SIN(L))^2)+SGN((null)-ABS(L))*ABS(S*COS(L))
- 1410 GOSUB1710:C(J,2)=T+INT((3600*RA/L)+1)
- 1420 PRINTN$(NN);" LAUNCHES A ";M$(-(C(J,1)>10));"-";C(J,1);"."
- 1430 I9=1
- 1440 NEXT:NN=0:GOSUB1600:GOSUB1710:L=ABS(C-AN)
- 1450 IF(L<30ORL>330)ANDRA<6500ANDT>2000THEN1500
- 1460 IFI9=1THEN290
- 1461 IFI9<>1THEN1020
- 1470 PRINT"B1 CRASHES INTO HILLSIDE.":R9=2:GOTO1510
- 1480 PRINT"B1 DESTROYED.":R9=2:GOTO1510
- 1490 PRINT"B1 RUNS OUT OF FUEL.":GOTO1470
- 1500 NN=0:GOSUB1710:IFRA<FTHEN1505
- 1501 PRINT"B1 REFUELS FROM TANKER AIRCRAFT.":FORI=1TO1500:NEXT
- 1505 PRINT"B1 LANDS AT THULE AFB."
- 1506 PRINT"MISSION COMPLETE."
- 1510 PRINT"MISSION SUMMARY:":IFT8=0THEN1540
- 1520 IFT8=T9THENPRINT"PRIMARY";
- 1530 IFT8<>T9THENPRINT"SECONDARY";
- 1535 PRINT" TARGET, ";N$(T8);" DESTROYED."
- 1540 PRINT"DEFENSE COMPLEXES DESTROYED:"
- 1550 J=0:FORI=N0+1TON2:IFT(I,3)<>2THEN1560
- 1551 PRINTTAB(4);N$(I):J=1
- 1560 NEXT:IFJ=0THENPRINTTAB(4);"NONE"
- 1570 IFR9=1THENPRINT"CREW WILL DIE FROM RADIATION EXPOSURE."
- 1580 IFR9=2THENPRINT"CREW DEAD."
- 1590 INPUT"GO AGAIN (Y/N)";A$:IFA$="Y"THEN100
- 1591 END
- 1600 DX=X-T(NN,1):DY=Y-T(NN,2)
- 1610 IFDY=0THENAN=90-180*(DX>0):RETURN
- 1620 AN=ATN(-DX/DY)*180/(null)-180*(DY<0)+360*(DX>0)*(DY>0):RETURN
- 1650 IFLEFT$(A$,1)=","THEN1670
- 1660 A$=RIGHT$(A$,LEN(A$)-1):IFLEN(A$)>1THEN1650
- 1665 A$=" "
- 1670 A$=RIGHT$(A$,LEN(A$)-1):RETURN
- 1710 RA=SQR((X-T(NN,1))^2+(Y-T(NN,2))^2):RETURN
- 1760 NN=-1:FORL=0TON2:IFA$=LEFT$(N$(L),2)THENNN=L
- 1770 NEXT:RETURN
-